#include "FAT32_functions.h"
#include "interfaz_fuse.h"
#include "sockets_FS.h"
#include "protocolo_NIPC.h"

static struct fuse_operations FS_funciones = {

.create = FS_create,
.open = FS_open,
.read = FS_read,
.write = FS_write,
.flush = FS_flush,
.release = FS_release,
.truncate = FS_truncate,
//.ftruncate = FS_truncate,
.unlink = FS_unlink,
.mkdir = FS_mkdir,
.readdir = FS_readdir,
.rmdir = FS_rmdir,
.fgetattr = FS_fgetattr,
.getattr = FS_getattr,
.rename = FS_rename,

};
void inicializar();
void inicializar(void){
	leer_Boot_Sector();
	setFS();
	bajar_datos_Cluster_FAT();

	printf("Datos del disco (leidos o calculados):\n");
	printf("Cantidad de sectores= %i\n",FAT32.cantidadSectores);
	printf("Cluster directorio Raiz= %i\n",FAT32.numClusterDirRoot);
	printf("Cantidad de clusters libres= %i\n",FAT32.numClustersLibres);
	printf("Sectores por cluster= %i\n",FAT32.sectoresPorCluster);
	printf("Sectores por fat= %i\n",FAT32.sectoresPorFAT);
	printf("Sectores reservados= %i\n",FAT32.sectoresReservados);
	printf("Tamanio sector= %i\n",FAT32.tamanioSector);

int sock = 0;
		

			struct sockaddr_in data;
	
//va por config esto
			char* ip = "192.168.1.3";
			char* puerto = "1500";

			data.sin_family = AF_INET;
			data.sin_addr.s_addr = inet_addr(ip);
			data.sin_port = htons(atoi(puerto));

			iniciarSocket(&sock);
			
			conectarSocket(&sock,data);
			NIPC paquete;
			char buffHandShake[1024];
			memset(buffHandShake,0,1024);
			char op=0; uint16_t res=1;
			paquete.mensaje;

			memcpy(buffHandShake,&op,sizeof(uint8_t));
			memcpy(buffHandShake+sizeof(uint8_t),&op,sizeof(uint16_t));
	
			enviarDatos(buffHandShake,3,sock);
			memset(buffHandShake,0,1024);
			recibirDatos(buffHandShake,sock);
			memcpy(&res,buffHandShake+sizeof(uint8_t),sizeof(uint16_t));
			if(res==0);
				printf("hand existoso\n");


	return ;
}




int main(int argc,char* argv[]){


    inicializar();

    fuse_main(argc,argv,&FS_funciones,NULL);

	return 0;
}
